In a typical computer system, an operating system or application can either access the system memory directly or through a faster, but smaller cache. The cache memory normally uses a different memory technology and has much better performance characteristics. In this cached hierarchy, cache is not visible to software and is completely handled by the hardware for data movements between the cache and the main system memory. The cache is sometimes referred to as the first level memory and the main system memory as the second level memory.